561
261
149182
14440
Linear mixed models have a lot of moving parts. I've found that simulations really helped me understand how these models work and the various parts of them. Here are some of my favorite simulation guides, tutorials, and resources in #RStats.
— Craig Van Pay (@CKVanPay) April 2, 2021
(1/x) 🧵
Linear mixed models have a lot of moving parts. I've found that simulations really helped me understand how these models work and the various parts of them. Here are some of my favorite simulation guides, tutorials, and resources in #RStats.
— Craig Van Pay (@CKVanPay) April 2, 2021
(1/x) 🧵
I had the pleasure working with @_MMathur on this hybrid approach for combining a static website with #rstats #shiny apps and selectively deploy to @heroku using GitHub actions, see the link to the GitHub repo https://t.co/3GlNCMuzAC pic.twitter.com/enoddwi1TR
— Péter Sólymos (@psolymos) April 2, 2021
---
title: "#rstats flexdashboard"
output:
flexdashboard::flex_dashboard:
orientation: rows
vertical_layout: scroll
source_code: embed
theme: sandstone
---
```{r setup, include=FALSE}
library(flexdashboard)
library(rtweet)
library(dplyr)
library(httr)
library(lubridate)
library(echarts4r)
get_unique_value <- function(data, col) {
col <- enquo(col)
data %>%
pull(!!col) %>%
unique() %>%
length()
}
rstats_tweets <- read_twitter_csv("data/rstats_tweets.csv")
count_timeseries <- rstats_tweets %>%
ts_data(by = "hours")
tweets_today <- rstats_tweets %>%
filter(created_at == today()-1)
by_hour <- rstats_tweets %>%
group_by(hour = hour(created_at)) %>%
summarise(count = n()) %>%
ungroup()
number_of_unique_tweets <- get_unique_value(rstats_tweets, text)
number_of_unique_tweets_today <- get_unique_value(tweets_today, text)
number_of_tweeters_today <- get_unique_value(tweets_today, user_id)
number_of_likes <- rstats_tweets %>%
pull(favorite_count) %>%
sum()
get_tweet_embed <- function(user, status_id) {
url <- stringr::str_glue("https://publish.twitter.com/oembed?url=https://twitter.com/{user}/status/{status_id}&partner=&hide_thread=false")
response <- GET(url) %>%
content()
return(response$html)
}
```
Row
-----------------------------------------------------------------------
### Tweets Today
```{r}
valueBox(number_of_unique_tweets_today, icon = "fa-comment-alt", color = "plum")
```
### Tweeters Today
```{r}
valueBox(number_of_tweeters_today, icon = "fa-user", color = "peachpuff")
```
### #rstats Likes
```{r}
valueBox(number_of_likes, icon = "fa-heart", color = "palevioletred")
```
### #rstats Tweets
```{r}
valueBox(number_of_unique_tweets, icon = "fa-comments", color = "mediumorchid")
```
Row {.tabset .tabset-fade data-width=400}
-----------------------------------------------------------------------
### Tweet volume
```{r}
count_timeseries %>%
e_charts(time) %>%
e_line(n, name = "# of tweets", smooth = TRUE) %>%
e_x_axis(
type = "time",
formatter = htmlwidgets::JS(
"function(value){
let date = new Date(value);
label = `${date.getDate()}-${(parseInt(date.getMonth()) + 1)}-${date.getFullYear()}`;
return label;
}"
)
) %>%
e_axis_labels(y = "Tweets") %>%
e_theme("westeros") %>%
e_tooltip(trigger = "axis", formatter = htmlwidgets::JS("
function(params) {
let date = new Date(params[0].value[0])
let options = { year: 'numeric', month: 'short', day: 'numeric', hour: 'numeric'}
let title = `${date.toLocaleDateString('en-US', options=options)}`
let num = `${params[0].value[1]} tweets`
return(`${title}${num}`);
}"))
```
### Tweets by Hour of Day
```{r}
by_hour %>%
e_charts(hour) %>%
e_step(count, name = "Tweets", step = "middle") %>%
e_x_axis(
min = 0,
max = 23,
) %>%
e_axis_labels(x = "Time of Day (UTC)", y = "Tweets") %>%
e_theme("westeros") %>%
e_tooltip(trigger = "axis", formatter = htmlwidgets::JS("
function(params) {
let title = `${params[0].value[0]}h`
let num = `${params[0].value[1]} tweets`
return(`${title}${num}`);
}"))
```
Row
-----------------------------------------------------------------------
### 💗 Most Liked Tweet Today
```{r}
most_liked_url <- tweets_today %>%
slice_max(favorite_count)
shiny::HTML(get_tweet_embed(most_liked_url$screen_name, most_liked_url$status_id))
```
### ✨ Most Retweeted Tweet Today
```{r}
most_retweeted <- tweets_today %>%
slice_max(retweet_count)
shiny::HTML(get_tweet_embed(most_retweeted$screen_name, most_retweeted$status_id))
```
### 🎉 Most Recent
```{r}
most_recent <- tweets_today %>%
slice_max(created_at)
shiny::HTML(get_tweet_embed(most_recent$screen_name[1], most_recent$status_id[1]))
```